$(function () {
    // 需求1.初始化文章分类列表
    // 添加 修改 删除后都需要重新渲染 所以封城函数
    let layer = layui.layer
    InitArtCateList();
    function InitArtCateList() {
        axios({
            method: 'GET',
            url: '/my/article/cates',
        }).then(res => {
            console.log(res);
            if (res.data.status !== 0) {
                return layer.msg(res.data.message);
            }
            // 成功后直接渲染
            let arr = []
            // 遍历返回的数据
            res.data.data.forEach(function (ele) {
                if (ele.Id < 0) {
                    return
                }
                arr.push(`
                <tr>
                    <td>${ele.Id}</td>
                    <td>${ele.name}</td>
                    <td>${ele.alias}</td>
                    <td>
                        <button data-id="${ele.Id}" class="btn-edit layui-btn layui-btn-xs">修改</button>
                        <button data-id="${ele.Id}" class="btn-del layui-btn layui-btn-xs layui-btn-danger">删除</button>
                    </td>
                    </tr>
                `);
            });
            // 循环之外 赋值
            $('tbody').empty().html(arr.join(''));
        });
    }
    
    // 需求2.  点击按钮 弹出添加类别对话框
    // 定义一个全局变量 接收open()的索引值 将来用于关闭对话框
    let indexAdd = 0
    $('#addBtn').on('click', function () {
        indexAdd = layer.open({
            type: 1,
            title: '添加文章类别',
            area: ['500px', '260px'],
            // 将来 content里面要放form表单,所以放到最末尾
            content: `
            <form id="addForm" class="layui-form" action="">
                <div class="layui-form-item">
                    <label class="layui-form-label">分类名称</label>
                    <div class="layui-input-block">
                        <input type="text" name="name" required lay-verify="required" placeholder="请输入分类名称" autocomplete="off"
                            class="layui-input">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">分类别名</label>
                    <div class="layui-input-block">
                        <input type="text" name="alias" required lay-verify="required" placeholder="请输入分类别名" autocomplete="off"
                            class="layui-input">
                    </div>
                </div>
                <div class="layui-form-item">
                    <div class="layui-input-block">
                        <button class="layui-btn" lay-submit lay-filter="formDemo">确认添加</button>
                        <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                    </div>
                </div>
            </form>
            `
        });
    })

    // 需求3.添加文章分类 后添加的动态元素 需要使用事件委托
    $('body').on('submit', "#addForm", function (e) {
        // 阻止默认行为
        e.preventDefault();
        // 发送ajax
        axios({
            method: 'POST',
            url: '/my/article/addcates',
            data: $(this).serialize()
        }).then(res => {
            // console.log(res);
            if (res.data.status !== 0) {
                return layer.msg(res.data.message)
            }
            // 成功提示  初始化文章类别
            layer.msg('恭喜您,添加文章类别成功!');
            InitArtCateList();
            // 关闭对话框
            layer.close(indexAdd)
        });
    });
    // 需求4.修改分类弹出层  
    let indexEdit = 0
    $('tbody').on('click', ".btn-edit", function () {
        indexEdit = layer.open({
            type: 1,
            title: '修改文章类别',
            area: ['500px', '260px'],
            //  html中构建完成form  剪切过来 
            content: `
                <form lay-filter="editForm" id="editForm" class="layui-form" action="">
                <!-- 隐藏域 填充Id值  将来修改数据的时候使用 -->
                     <input type="hidden" name="Id">
                <div class="layui-form-item">
                        <label class="layui-form-label">分类名称</label>
                        <div class="layui-input-block">
                            <input type="text" name="name" required lay-verify="required" placeholder="请输入分类名称" autocomplete="off"
                                class="layui-input">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label">分类别名</label>
                        <div class="layui-input-block">
                            <input type="text" name="alias" required lay-verify="required" placeholder="请输入分类别名" autocomplete="off"
                                class="layui-input">
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <div class="layui-input-block">
                            <button class="layui-btn" lay-submit lay-filter="formDemo">确认修改</button>
                            <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                        </div>
                    </div>
                </form>
                `
        });
        //  点击编辑按钮做两件事 2.赋值
        // 获取数据 和渲染数据 要写到.btn-edit的点击事件里面
        let id = $(this).attr('data-id');
        // 发送ajax
        axios ({
            method: 'GET',
            // /:id  动态参数(路由参数)
            // 特点:/不能省略 :一点要去掉 id是动态变化的
            url: '/my/article/cates/' + id
        }).then(res => {
            // console.log(res);
            if (res.data.status !== 0) {
                return layer.msg(res.data.message)
            }
            // 成功后渲染 layui.form.val()
            layui.form.val('editForm',res.data.data)
        });
    });
    // 需求5.修改文章分类
    $('body').on('submit', "#editForm", function (e) {
        // 阻止默认行为
        e.preventDefault();
        // 发送ajax  修改分类
        axios({
            method: 'POST',
            url: '/my/article/updatecate',
            data: $(this).serialize()
        }).then(res => {
            // console.log(res);
            if (res.data.status !== 0) {
                return layer.msg(res.data.message)
            }
            // 成功提示  初始化文章类别
            layer.msg('恭喜您,添加文章类别成功!');
            InitArtCateList();
            // 关闭对话框
            layer.close(indexEdit);
        });
    });
    // 需求6.删除
    $('tbody').on('click', '.btn-del', function () {
        //  获取自定义属性  一定要在弹窗外面
        let id = $(this).attr('data-id');
      // 弹框
    layer.confirm('确认删除吗?', {icon: 3, title:'提示'}, function(index){
        // 发送ajax
        axios({
            //  /必须保留,:必须删除
            url: '/my/article/deletecate/' + id
        }).then(res => {
            console.log(res);
            if (res.data.status !== 0) {
                return layer.msg(res.data.message)
            }
            // 成功提示  初始化文章分类列表
            layer.msg('恭喜您.删除文章列表成功!')
            InitArtCateList();
        });
        // 关闭询问框
        layer.close(index);
      });
    })
 
})  